package com.modele.dao.impl;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import com.modele.dao.DAO;
import com.modele.entity.Groupe;


public class GroupeDAO extends DAO<Groupe>{

	public GroupeDAO(Connection connexion) {
		super(connexion);
	}

	@Override
	public boolean create(Groupe obj) {
		try 
		{
//			PreparedStatement statement = connexion.prepareStatement("INSERT INTO groupe " +
//					"(nomGroupe, chefGroupe,dateCreation,nbUser, horaireRepas, horaireLimite, aEmporter, noms, restaurant) " +
//					"VALUES (?,?,?,?,?,?,?,?,?)");
			
			PreparedStatement statement = connexion.prepareStatement("INSERT INTO groupe " +
				"(nomGroupe, nbUsers, horaireLimite, horaireRepas, dateCreation, aEmporter, idChefGroupe, idRestaurant) " +
				"VALUES (?,?,?,?,?,?,?,?)");
			
			statement.setString(1, obj.getNomGroupe());
			statement.setInt(2, obj.getNbUser());
			statement.setString(3, obj.getHoraireLimite());
			statement.setString(4, obj.getHoraireRepas());
			statement.setString(5, obj.getDateCreation());
			statement.setBoolean(6, obj.isaEmporter());
			statement.setInt(7, obj.getIdChefGroupe());
			statement.setInt(8,obj.getIdRestaurant());
			return statement.executeUpdate() == 1;
		} 
		catch (SQLException e) 
		{
			e.printStackTrace();
		}
		return false;
		
	}

	@Override
	public boolean delete(Groupe obj) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public boolean update(Groupe obj) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public Groupe find(int id) {
		// TODO Auto-generated method stub
		return null;
	}
	@Override
	public List<Groupe> findAll() 
	{
		List<Groupe> list = new ArrayList<Groupe>();
		
		Groupe groupe = null;
		
		try 
		{
			PreparedStatement statement = connexion.prepareStatement("SELECT * FROM groupe");
			
			if(statement.execute())
			{
				ResultSet result = statement.getResultSet();
				
				while(result.next())
				{
					groupe= new Groupe();

					int id = result.getInt(1);
					
					groupe.setIdGroupe(id);
					groupe.setNomGroupe(result.getString(2));
					groupe.setNbUser(result.getInt(3));
					groupe.setHoraireLimite(result.getString(4));
					groupe.setHoraireRepas(result.getString(5));
					groupe.setDateCreation(result.getString(6));
					groupe.setaEmporter(result.getBoolean(7));
					groupe.setIdChefGroupe(result.getInt(8));
					groupe.setIdRestaurant(result.getInt(9));
					
					list.add(groupe);
				}
			}
		} 
		catch (SQLException e) 
		{
			e.printStackTrace();
		}
		return list;
	}

	@Override
	public Groupe findByValue(Object obj) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public boolean isPresent(Object obj) {
		// TODO Auto-generated method stub
		return false;
	}
	

	public int findChef(int idGroupe) {
		
		int idUser = -1;
		try 
		{
			PreparedStatement statement = connexion.prepareStatement("SELECT idChefGroupe FROM groupe WHERE idGroupe = ?");
			statement.setInt(1, idGroupe);
			if(statement.execute())
			{
				ResultSet result = statement.getResultSet();
				if(result.next())
				{
					idUser = result.getInt(1);
				}
			}
			
			
		} 
		catch (SQLException e) 
		{
			e.printStackTrace();
		}
		return idUser;
	}

	}


